#ifndef ENTRANCE_RUN_CONFIG_H
#define ENTRANCE_RUN_CONFIG_H
/**************************************************************************
Date: 2020-12-22
Description: 单例获取app运行配置
**************************************************************************/
#include "CAppComm.h"

// 动态加载配置文件
#define APP_CONFIG_SEC		"appConfigSec"
#define APP_RUN_PARAM_INI 	"./config/EntranceRunConfig.ini"

// 设备型号
#define APP_DEV_MODE					"APP_DEV_MODE"
// APP版本
#define APP_VERSION						"APP_VERSION"
// 相机方向是否为横向
#define APP_CAMERA_HPLATE				"APP_CAMERA_HPLATE"
#define DEFAULT_APP_CAMERA_HPLATE		true
// 2021-08-30 jxs 增加初始化相机时旋转角度
#define KEY_APP_INIT_CAMERA_ROTATION_ANGLE	"APP_INIT_CAMERA_ROTATION_ANGLE"
#define DEFAULT_APP_INIT_CAMERA_ROTATION_ANGLE		"0"

// 按键支持
#define APP_DEV_KEY_SUPPORT				"APP_DEV_KEY_SUPPORT"
#define DEFAULT_APP_DEV_KEY_SUPPORT		true

// 镜像中默认启动的APP页面
#define KEY_START_APP_PAGE				"START_APP_PAGE"
#define DEFAULT_START_APP_PAGE_STRING	"0"

// 设备布局类型
#define APP_DEV_LAYOUT_TYPE				"APP_DEV_LAYOUT_TYPE"
#define DEFAULT_APP_DEV_LAYOUT_TYPE		"default"

// 是否启用iot功能
#define KEY_IOT	"APP_IOT"
#define DEFAULT_IOT	 true

// 设备尺寸 getDimensions
#define KEY_DEV_DIMENSIONS	"APP_DEV_DIMENSIONS"
#define DEFAULT_DEV_DIMENSIONS	 "8-a"

// 局域网室内机呼叫是否增强亮度和对比度
#define KEY_LAN_ROOM_CALL_IS_ENHANCE_CAMERA "LAN_ROOM_CALL_IS_ENHANCE_CAMERA"
#define DEFAULT_LAN_ROOM_CALL_IS_ENHANCE_CAMERA	 false

// 升级后清除数据的APP版本
#define KEY_UPDATE_CLENAN_DATA_APP_VERSION	"UPDATE_CLENAN_DATA_APP_VERSION"
#define DEFAULT_UPDATE_CLENAN_DATA_APP_VERSION	 ""

// 获取运行配置文件
class CEntranceRunConfig
{
private:
	/**
	* 构造函数
	*
	* @param[in] -
	* @note -
	* @return -
	*/
	CEntranceRunConfig(){};

	/**
	* 析构函数
	*
	* @param[in] -
	* @note -
	* @return -
	*/
    ~CEntranceRunConfig(){};

public:

	/**
	* 获取单例
	*
	* @param[in] -
	* @note -
	* @return -
	*/
    static CEntranceRunConfig & getSingleton();

	/**
	* 获取配置INI指针
	*
	* @param[in] -
	* @note -
	* @return -
	*/
    CIniFileCache * getIniFileCache();

public:

	/**
	* 获取设备型号
	*
	* @param[in] -
	* @note -
	* @return -
	*/
    string getDevMode();
	/**
	* 获取APP版本
	*
	* @param[in] -
	* @note -
	* @return -
	*/
    string getAppVersion();
	/**
	* 相机方式是否为横方向
	*
	* @param[in] -
	* @note -
	* @return -
	*/
    bool cmaerIsHp();
	/**
	* 初始化相机时旋转角度
	*
	* @param[in] -
	* @note -
	* @return -
	*/
    int cameraInitRotationAngle();

	/**
	* 是否支持按键输入
	*
	* @param[in] -
	* @note -
	* @return -
	*/
    bool isKeyInput();

	/**
	* 获取启动的APP页面
	*
	* @param[in] -
	* @note -
	* @return -
	*/
    int getStartAppPage();

	/**
	* 获取设备布局类型
	*
	* @param[in] -
	* @note -
	* @return -
	*/
    string getDevLayoutType();
	

	/**
	* 是否支持iot功能
	*
	* @param[in] -
	* @note -
	* @return -
	*/
    bool isIot();

	/**
	* 获取设备尺寸
	*
	* @param[in] -
	* @note -
	* @return -
	*/
    string getDimensions();
	/**
	* 获取是否增强摄像头效果
	*
	* @param[in] -
	* @note -
	* @return -
	*/
    bool getLanRoomCallIsEnhanceCamera();
	/**
	* 获取升级后清除数据的APP版本
	*
	* @param[in] -
	* @note - KEY_UPDATE_CLENAN_DATA_APP_VERSION
	* @return -
	*/
    string getUpdateCleanDataAppVersion();

private:
    // 读取APP ini配置参数
    CIniFileCache   m_appIniFileCahce;

    static 	CEntranceRunConfig  m_singleton;
};

#endif // ENTRANCE_RUN_CONFIG_H
